<?php require 'base/header.php'; ?>


<!-- jQuery è caricata alla fine: evitiamo di mostrare il contenuto fino al caricamento
     TODO: A questo punto tanto varrebbe spostare lo script nell'head -->
<div id="esito"></div>
<div id="caricamento_in_corso" style="padding: 5em;">Caricamento degli eventi in corso...</div>
<div id="importabili" style="visibility: hidden;">

<?php

$carica_api_maps = 'sync'; // Qui non ho voglia di gestire il doppio caricamento

foreach ($events as $e) {
	/* XXX: Importare anche host (creator)? */
	/* XXX: Ci servono più immagini? NB: C'è anche pic_square */
	if (isset($e['pic_big']) && $e['pic_big'])
		$foto = $e['pic_big'];
	elseif (isset($e['pic']) && $e['pic'])
		$foto = $e['pic'];
	elseif (isset($e['pic_small']) && $e['pic_small'])
		$foto = $e['pic_small'];
	else $foto = null;
	
	// La data è salvata su un server negli USA e purtroppo la differenza varia
	// a seconda che ci sia l'ora solare o quella legale:
        // - 8 ore ara solare (periodo invernale)
	// - 9 ore ora legale (periodo estivo)
	// Le sistemiamo qui una volta per tutte
	$e['start_time'] -= 9*60*60;
	if (isset($e['end_time']) && $e['end_time'])
		$e['end_time'] -= 9*60*60;

	/* "Sintetizza" l'indirizzo con i campi compilati
	 * NB: latitudine e longitudine forniti da FB sono
	 *     completamente inaffidabili */
	if (isset($e['venue']['street']) && $e['venue']['street'])
		$indirizzo = htmlspecialchars($e['venue']['street'],ENT_QUOTES,'UTF-8');
	else $indirizzo = "";
	if (isset($e['venue']['city']) && $e['venue']['city']) {
		if ($indirizzo != "")
			$indirizzo .= ', ';
		$indirizzo .= htmlspecialchars($e['venue']['city'],ENT_QUOTES,'UTF-8');
	}
	if ($indirizzo && isset($e['venue']['country']) && $e['venue']['country'])
		$indirizzo .= ', ' . htmlspecialchars($e['venue']['country'],ENT_QUOTES,'UTF-8');
	/* A questo punto $indirizzo contiene "{street[,città] | città}[, country]", oppure è vuoto */
?>
	<h3 id="titolo_evento<?=$e['eid']?>"><a href="#"><?=htmlspecialchars($e['name'],ENT_QUOTES,'UTF-8')?></a></h3>
	<div id="importa<?=$e['eid']?>">
		<?= form_open('', array('id' => "form_importa".$e['eid'])) ?>
		<p>
			<?php if ($foto) { ?><img class="immagine_importa_evento" src="<?=$foto?>" alt="foto evento" /><?php } ?>
			<b>Nome:</b> <?=htmlspecialchars($e['name'],ENT_QUOTES,'UTF-8')?><br />
			Aggiunto da <fb:name uid="<?=$e['creator']?>" useyou="false"></fb:name>
		</p><p>
			<b>Categoria:</b>
			<?php
				// TODO: definire globalmente in qualche modo?
				//       presente anche in modello evento e dozzine di altri posti
				$categorie = array('pub' => 'Bar, pub, ristoranti', 'disco' => 'Disco', 'concerti' => 'Concerti', 'cinema' => 'Cinema',
				                   'cultura' => 'Eventi culturali', 'altro' => 'Altro');
				echo form_dropdown('categoria', $categorie, 'altro', 'id=categoria'.$e['eid']);
			?>
		</p><p>
			<input type="button" class="bottone_importa" id="bottone<?=$e['eid']?>" value="Importa evento" onclick="invia_form(<?=$e['eid']?>)">
			<input type="button" class="bottone_nascondi" id="nascondi<?=$e['eid']?>" value="Non mostrare più questo evento" onclick="nascondi(<?=$e['eid']?>)">
		</p><p id="ripristina<?=$e['eid']?>" style="display:none">
				Questo evento non sarà più visualizzato.
				<input type="button" value="Ripristina" onclick="ripristina_nascosto(<?=$e['eid']?>)">
		</p><p>
			<b>Inizio:</b> <?=strftime('%A %e %B %Y %R',$e['start_time'])?> <br />
			<?php if (isset($e['end_time']) && $e['end_time']) { ?><b>Fine:</b> <?=strftime('%A %e %B %Y %R',$e['end_time'])?> <br /><?php } ?>
		</p>
		<h4>Descrizione</h4>
		<p class="importa_descrizione">
			<?= auto_link(nl2br(htmlspecialchars($e['description'], ENT_QUOTES, 'UTF-8')), 'both', TRUE) ?>
		</p>
		<p>
			<label for="location<?=$e['eid']?>"><b>Luogo:</b></label>
			<input type="text" name="location" value="<?= (isset($e['location']) && $e['location']) ? htmlspecialchars($e['location'],ENT_QUOTES,'UTF-8') : '' ?>" id="location<?=$e['eid']?>" class="input_location" />
		</p>
		<p>
			<label for="abilita_mappa<?=$e['eid']?>">Inserisci indirizzo</label>
			<input type="checkbox" id="abilita_mappa<?=$e['eid']?>" onchange="nuovo_stato_indirizzo(<?=$e['eid']?>)" />
		</p>
		<div id="div_indirizzo<?=$e['eid']?>" style="display: none;">
			<input type="text" class="indirizzo_mappa" name="address" id="address<?=$e['eid']?>" value="<?= $indirizzo ?>" />
			<input type="button" id="aggiorna_mappa<?=$e['eid']?>" value="Cerca sulla mappa" onclick="nuovo_indirizzo(<?=$e['eid']?>)" />
			<div id="msg_geocoder<?=$e['eid']?>"></div>
			<div id="mappa<?=$e['eid']?>" class="mappa_gmap"></div>
		</div>

		<input type="hidden" name="eid" value="<?=$e['eid']?>" />
		<?php if ($foto) echo '<input type="hidden" name="foto" id="foto" value="'.$foto.'" />'; ?>
		<input type="hidden" name="name" value="<?=htmlspecialchars($e['name'],ENT_QUOTES,'UTF-8')?>">
		<input type="hidden" name="start_time" value="<?=$e['start_time']?>">
		<?php if (isset($e['end_time']) && $e['end_time']) { ?><input type="hidden" name="end_time" value="<?=$e['end_time']?>"><?php } ?>
		<input type="hidden" name="description" value="<?=htmlspecialchars($e['description'],ENT_QUOTES,'UTF-8')?>">
		<?= form_close() ?>
	</div>

<?php } ?>

</div>
<div id="importabili_aux">
<p><a href="javascript:ripristina_eventi_importabili()">Ripristina eventi nascosti</a></p>
<p>Hai molti eventi da inserire? <a href="<?=site_url('simple/promuovi')?>">Registrati come gestore</a> e usa il pannello di controllo per gestirli in modo semplice e accedere alle statistiche.</p>
</div>


<?php require 'base/footer_prescript.php'; ?>

<script type="text/javascript">// <![CDATA[
	// Variabili globali
	var geocoder = new google.maps.Geocoder();
	var map = new Object(); // Array associativo (map[eid])
	var marker = new Object(); // Array associativo (marker[eid])
	var schede_inizializzate = new Object(); // Array associativo (schede_inizializzate[eid])
	var dintorni_di_pisa = new google.maps.LatLngBounds(
				new google.maps.LatLng(43.539,10.118),    // SW
				new google.maps.LatLng(43.859,10.740));   // NE

	$(document).ready(function() {
		$("#importabili").accordion({ collapsible: true, active: <?= count($events)-1 ?>, autoHeight: false })
			.bind('accordionchange', function(event,ui) {
				if (typeof(ui.newContent.attr('id')) != 'undefined') {
					eid = ui.newContent.attr('id').slice(7); // id = "importa1234..."
					if (!(eid in schede_inizializzate))
						inizializza_scheda(eid);
				}
			});
		<?php
		// Inizializza la prima scheda visibile (quella più in basso, vedi opzione 'active')
		echo 'inizializza_scheda('.$events[count($events)-1]['eid'].');';
		?>
		$("#caricamento_in_corso").hide();
		$("#importabili").css('visibility','visible');
		$(".bottone_importa").attr('disabled',''); // Firefox tende a "ricordare" lo stato dopo F5
		$(".bottone_nascondi").attr('disabled','');
	});

	function invia_form(eid) {
		var dati = "";
		if ($("#abilita_mappa"+eid).attr('checked')) {
			// Otteniamo latitudine e longitudine dalla mappa
			// NB: l'utente può spostare a mano il marker
			var pos = marker[eid].getPosition();
			dati = $("#form_importa"+eid).serialize()+"&lat="+pos.lat()+"&lng="+pos.lng();
		} else {
			// Ci assicuriamo che non venga inviato un indirizzo
			$("#address"+eid).val('');
			dati = $("#form_importa"+eid).serialize();
		}
		$.post("<?php echo site_url('caricaEventi/aggiungi_evento_fb'); ?>",
			dati, // NB: serializza anche il campo col token anti-csrf
			function(msg) {
				if (msg.state == 'SUCCESS') {
					var info = '<p style="margin-top: 30px"><b>Evento importato con successo.</b> <a href="<?=site_url('/stasera/evento')?>/' + msg.id + '">Vai alla pagina dell\'evento</a></p><p style="margin-top: 10px; margin-bottom: 40px; color: #777">Nota: È possibile eliminare gli eventi importati utilizzando il link in fondo alla pagina.</p>';
					$("#bottone"+eid).before(info);
					$("#bottone"+eid).hide();
					$("#abilita_mappa"+eid).attr('disabled','disabled');
					$("#address"+eid).attr('disabled','disabled');
					$("#location"+eid).attr('disabled','disabled');
					$("#aggiorna_mappa"+eid).attr('disabled','disabled');
					$("#categoria"+eid).attr('disabled','disabled');
				} else $("#bottone"+eid).val(msg.message);
			},
			"json"
		);
		$("#bottone"+eid).attr('disabled','disabled').val("Importazione in corso...");
		$("#nascondi"+eid).hide();
	}
	function nascondi(eid) {
		$.post("<?php echo site_url('caricaEventi/nascondi_evento_fb'); ?>",
			{ eid: eid, ci_csrf_token: $.cookie("ci_csrf_token") },
			function(msg) {
				if (msg == "OK") {
					$("#nascondi"+eid).hide();
					$("#ripristina"+eid).show();
				} else $("#nascondi"+eid).val(msg);
			},
			"text"
		);
		$("#nascondi"+eid).attr('disabled','disabled').val("Invio richiesta in corso...");
		$("#bottone"+eid).hide();
	}
	function ripristina_nascosto(eid) {
		// NB: Vedi anche ripristina_eventi_importabili in base/footer_postscript.php
		$.post("<?php echo site_url('caricaEventi/ripristina_evento_nascosto'); ?>",
			{ eid: eid, ci_csrf_token: $.cookie("ci_csrf_token") },
			function(msg) {
				$("#ripristina"+eid).hide();
				$("#nascondi"+eid).show().removeAttr('disabled').val("Non mostrare più questo evento");
				$("#bottone"+eid).show();
			},
			"text"
		);
	}

	function inizializza_scheda(eid) {
		var indirizzo = $("#address"+eid).val();
		if ((indirizzo == '') && ($("#location"+eid).val() != '')) {
			// Prova a indovinare da location
			var luogo = $("#location"+eid).val();
			trova_coordinate(luogo, function(results, status) {
				if ((status == google.maps.GeocoderStatus.OK) && (dintorni_di_pisa.contains(results[0].geometry.location))) {
					$("#address"+eid).val(luogo);
					$("#abilita_mappa"+eid).attr('checked','checked');
					nuovo_stato_indirizzo(eid);
				}
			});
			trova_coordinate(luogo + ", Pisa", function(results, status) {
				if ((status == google.maps.GeocoderStatus.OK)
					&& (dintorni_di_pisa.contains(results[0].geometry.location))
					&& (results[0].geometry.location.toUrlValue() != "43.716135,10.396584") /* Location default di Pisa */
				) {
					$("#address"+eid).val(luogo + ", Pisa");
					$("#abilita_mappa"+eid).attr('checked','checked');
					nuovo_stato_indirizzo(eid);
				}
			});
		}
		if (indirizzo)
			$("#abilita_mappa"+eid).attr('checked','checked');
		nuovo_stato_indirizzo(eid); // Se serve, inizializza anche la mappa
		schede_inizializzate[eid] = true;
	}
	function inizializza_mappa(eid, tit, prima_lat, prima_lng) {
		var latlng = new google.maps.LatLng(prima_lat,prima_lng);
		var myOptions = {
			zoom: 14,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			streetViewControl: true
		}
		map[eid] = new google.maps.Map(document.getElementById("mappa"+eid), myOptions);
		marker[eid] = new google.maps.Marker({
			map: map[eid],
			draggable: true,
			title: tit
		});
		nuovo_indirizzo(eid);
	}
	function inizializza_autocomplete(eid) {
		$("#address"+eid).autocomplete({
			//This bit uses the geocoder to fetch address values
			source: function(request, response) {
				trova_coordinate(request.term, function(results, status) {
					response($.map(results, function(item) {
						return {
							label:  item.formatted_address,
							value: item.formatted_address,
							latitude: item.geometry.location.lat(),
							longitude: item.geometry.location.lng()
						}
					}));
				})
			},
			//This bit is executed upon selection of an address
			select: function(event, ui) {
				var posiz = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
				marker[eid].setPosition(posiz);
				map[eid].setCenter(posiz);
			}
		});
		$("#address"+eid).keypress(function(e) {
			// Tasto INVIO => Cerca sulla mappa
			if (e.which == 13)
				$("#aggiorna_mappa"+eid).click();
		});
	}

	function nuovo_indirizzo(eid) {	
		trova_coordinate($("#address"+eid).val(), function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				map[eid].setCenter(results[0].geometry.location);
				marker[eid].setPosition(results[0].geometry.location);
			} else {
				$("#msg_geocoder"+eid).text("Impossibile trovare le coordinate: " + status).hide().fadeIn();
			}
		});
	}
	function nuovo_stato_indirizzo(eid) {
		// Richiamata quando viene modificata la checkbox abilita_indirizzo
		var abilita = $("#abilita_mappa"+eid).attr('checked');
		if (abilita) {
			$("#div_indirizzo"+eid).show();
			if (!(eid in map)) {
				// La mappa va inizializzata solo se visibile, altrimenti memorizza
				// degli offset sbagliati e viene visualizzata solo in parte
				var tit = $("#location"+eid).val() ? $("#location"+eid).val() : "Evento";
				inizializza_mappa(eid, tit, 43.716667, 10.4);
				inizializza_autocomplete(eid);
			}
			if (!$("#address"+eid).val()) {
				$("#address"+eid).val("Pisa, Italy");
				nuovo_indirizzo(eid)
			}
		} else {
			$("#div_indirizzo"+eid).hide();
		}
	}

	function trova_coordinate(address, funzione) {
		return geocoder.geocode({
				address: address,
				bounds: dintorni_di_pisa,
				language:'it'
			}, funzione);
	}

	disabilita_controllo_eventi = true; // Non mostriamo di nuovo il link "importa", fa confusione
// ]]></script>

<?php require 'base/footer_postscript.php'; ?> 
